home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- /**
- * @status UNDER_REVIEW
- */
-
- /**
- * This is the printing prompt interface which can be used without knowlege of a
- * parent window. The parentage is hidden by the GetInterface though
- * which it is gotten. This interface is identical to nsIPintingPromptService
- * but without the parent nsIDOMWindow parameter. See nsIPrintingPromptService
- * for all documentation.
- */
-
- #include "nsISupports.idl"
- #include "nsIWebBrowserPrint.idl"
- #include "nsIWebProgressListener.idl"
- #include "nsIPrintSettings.idl"
- #include "nsIPrintProgressParams.idl"
- #include "nsIObserver.idl"
-
- [scriptable, uuid(44E314CA-75B1-4f3d-9553-9B3507912108)]
- interface nsIPrintingPrompt : nsISupports
- {
- /**
- * This service enables embedders to implement their own Print and Progress Dialogs.
- * Each platform has a "base" or "basckstop" implementation of the service. The
- * service is automatically registered at start up.
- *
- * Historically, platform toolkits with native dialogs have implemented them in the GFX layer
- * Usually they were displayed when a new DeviceContextSpec specific to that platform
- * was created.
- *
- * Windows: The GFX layer no longers supports default toolkit behavior for displaying the
- * native Print Dialog.
- * If an embedder implemented service returns any error code (other than NS_ERROR_ABORT)
- * printing will terminate.
- *
- * Returning NS_OK assumes that the PrintSettings object was correctly filled in and
- * if it does not have valid fields for printer name, etc. it may also terminate.
- *
- * Defaults for platform service:
- * showPrintDialog - displays a native dialog
- * showPageSetup - displays a XUL dialog
- * showProgress - displays a XUL dialog
- * showPrinterProperties - n/a
- *
- * Summary for Windows Embedders:
- * Stated once again: There is no "fallback" native platform support in GFX for the
- * displaying of the native print dialog. The current default implementation for Windows
- * display a native print dialog but a XUL-based progress dialog.
- * If you wish to have a native progress dialog on Windows you will have to create and
- * register your own service.
- *
- * Note: The Windows version Mozilla implements this service which is
- * automatically built and registered for you. You can use it as an example.
- * It is located at "mozilla/embedding/components/printingui/src/win". That service
- * is capable of displaying a native print dialog and a XUL progress dialog.
- *
- * To fly your own dialog you may:
- *
- * 1) Implement this service to display at least the Print Dialog and a Print Progress Dialog
- * or you may implement just one of the dialogs and pass back NS_ERROR_NOT_IMPLEMENTED
- * for any of the others.
- *
- * 2) For the Print Dialog:
- * You may stub out this service by having all the methods return NS_ERROR_NOT_IMPLEMENTED.
- * You can then fly you own dialog and then properly fill in the PrintSettings object
- * before calling nsIWebBrowserPrint's Print method. If you stub out this service
- * you MUST set "printSilent" to true, if you do not, Printing will terminate and an
- * error dialog will be displayed.
- *
- * Mac: The GFX layer still supports default toolkit behavior for displaying the Print Dialog.
- * If an embedder implemented service returns NS_ERROR_NOT_IMPLEMENTED for "showPrintDialog"
- * The toolkit will display the native print dialog.
- *
- * Defaults for platform service:
- * Mac OS9: showPrintDialog - displays a native dialog
- * showPageSetup - displays a native dialog
- * showProgress - displays a XUL dialog
- * showPrinterProperties - n/a
- *
- * Mac OSX: showPrintDialog - displays a native dialog
- * showPageSetup - displays a native dialog
- * showProgress - not implemented (provided by OS)
- * showPrinterProperties - n/a
- *
- * GTK: There are no native dialog for GTK.
- *
- * Defaults for platform service:
- * showPrintDialog - displays a XUL dialog
- * showPageSetup - displays a XUL dialog
- * showProgress - displays a XUL dialog
- * showPrinterProperties - displays a XUL dialog
- *
- * OS2:
- *
- * Defaults for platform service:
- * showPrintDialog - displays a XUL dialog
- * showPageSetup - displays a XUL dialog
- * showProgress - displays a XUL dialog
- * showPrinterProperties - displays a native dialog
- *
- *
- */
-
-
- /**
- * Show the Print Dialog
- *
- * @param webBrowserPrint - represents the document to be printed
- * @param printSettings - PrintSettings for print "job"
- *
- */
- void showPrintDialog(in nsIWebBrowserPrint webBrowserPrint,
- in nsIPrintSettings printSettings);
-
- /**
- * Shows the print progress dialog
- *
- * @param webBrowserPrint - represents the document to be printed
- * @param printSettings - PrintSettings for print "job"
- * @param openDialogObserver - an observer that will be notifed when the dialog is opened
- * @param isForPrinting - true - for printing, false for print preview
- * @param webProgressListener - additional listener can be registered for progress notifications
- * @param printProgressParams - parameter object for passing progress state
- * @param notifyOnOpen - this indicates that the observer will be notified when the progress
- * dialog has been opened. If false is returned it means the observer
- * (usually the caller) shouldn't wait
- * For Print Preview Progress there is intermediate progress
- */
- void showProgress(in nsIWebBrowserPrint webBrowserPrint,
- in nsIPrintSettings printSettings,
- in nsIObserver openDialogObserver,
- in boolean isForPrinting,
- out nsIWebProgressListener webProgressListener,
- out nsIPrintProgressParams printProgressParams,
- out boolean notifyOnOpen);
-
- /**
- * Shows the print progress dialog
- *
- * @param printSettings - PrintSettings for page setup (required)
- * @param aObs - An observer to know if the contents of the Print Settings
- * object has changed while the dialog is being shown.
- * For example, some platforms may implement an "Apply" button (not required)
- */
- void showPageSetup(in nsIPrintSettings printSettings, in nsIObserver aObs);
-
- /**
- * Sometimes platforms need to bring up a special properties dialog for showing
- * print specific properties. Although the PrintSettings has a place to set the
- * printer name, here is is an argument to be clear as to what printer is being
- * asked to have the properties set for it. The Printer name in the PS is ignored.
- *
- * @param printerName - name of printer (required)
- * @param printSettings - PrintSettings for page setup (required)
- */
- void showPrinterProperties(in wstring printerName,
- in nsIPrintSettings printSettings);
- };
-